<?php

class Sessao{
	
	public function adicionar($nomesessao,$valor,$chave=false){
		
		if(!$chave){
			if(!isset($_SESSION[$nomesessao]))
				$_SESSION[$nomesessao]=array();
			$tamanho=count($_SESSION[$nomesessao]);
			$_SESSION[$nomesessao][$tamanho]=$valor;
			$_SESSION[$nomesessao]['DELETADOS'][$tamanho]="FALSO";
		}
		else{
			if(!isset($_SESSION[$nomesessao][$chave]))
				$_SESSION[$nomesessao][$chave]=array();
			$tamanho=count($_SESSION[$nomesessao][$chave]);
			$_SESSION[$nomesessao][$chave][$tamanho]=$valor;
			$_SESSION[$nomesessao]['DELETADOS'][$tamanho]="FALSO";
		}
		$_SESSION[$nomesessao]['MUDOU']="SIM";
	}
	
	public function remove($nomesessao,$valor,$chave=false){
		
		if(!$chave){
			if(!isset($_SESSION[$nomesessao]))
				$_SESSION[$nomesessao]=array();
			$key=true;
			while($key!==false){
				$_SESSION[$nomesessao][$key]='DELETADO';
				$key=array_search($valor,$_SESSION[$nomesessao]);
			}
		}
		
		else{
			if(!isset($_SESSION[$nomesessao][$chave]))
				$_SESSION[$nomesessao][$chave]=array();
			$key=true;
			while($key!==false){
				for($j=0;$j<count($_SESSION[$nomesessao]);$j++)
				foreach($_SESSION[$nomesessao] as $v)
				{
					$v[$key]='DELETADO';
				}
				$key=array_search($valor,$_SESSION[$nomesessao][$chave]);
			}
		}
		$_SESSION[$nomesessao]['MUDOU']="SIM";
	}
	
		public function removeById($nomesessao,$id){
			if(!isset($_SESSION[$nomesessao]))
				$_SESSION[$nomesessao]=array();
			$_SESSION[$nomesessao]['DELETADOS'][$id]="DELETADO";
		$_SESSION[$nomesessao]['MUDOU']="SIM";
	}
	
	public function geraLista($nomesessao,$chave=false){
		$lista=array();
		$acum=0;
		
		if(!$chave){
			$sessao=$_SESSION[$nomesessao];
			for($i=0;$i<count($sessao);$i++){
				if($_SESSION[$nomesessao]['DELETADOS'][$i]!="DELETADOSSS"){
					$lista[$acum]=$sessao[$i];
					$acum++;
			}
		}
			
		}
		else {
			if(isset($_SESSION[$nomesessao])){
			$sessao=$_SESSION[$nomesessao];
			//ver($sessao,0);
			
			$keys=array_keys($_SESSION[$nomesessao]);
			//ver($keys,0);
			for($cont=0;$cont<count($keys);$cont++){
				for($i=0;$i<count($sessao[$keys[0]]);$i++){
					if($_SESSION[$nomesessao]['DELETADOS'][$i]!="DELETADOSSS"){
						$lista[$keys[$cont]][$acum]=$sessao[$keys[$cont]][$i];
						$acum++;
					}
				}
				$_SESSION['DELETADOS'][$cont]="FALSO";
				$acum=0;
			}
			}
		}
		//ver($lista);
		//$_SESSION[$nomesessao]=array();
		//$_SESSION[$nomesessao]=$lista;
		//ver($_SESSION,0);
		//ver($lista,0);
		return ($lista);
	}
	
	public function salvaNaSessao($nomesessao){
		$lista=$this->geraLista($nomesessao,true);
		$_SESSION[$nomesessao]=$lista;
	}
	
	public function edita($nomesessao){
		$lista=$this->geraLista($nomesessao,true);
		$_SESSION[$nomesessao]=$lista;
	}
	
		public function editar($nomesessao,$id){
		if(!$chave){
			if(!isset($_SESSION[$nomesessao]))
				$_SESSION[$nomesessao]=array();
			$tamanho=count($_SESSION[$nomesessao]);
			$_SESSION[$nomesessao][$tamanho]=$valor;
			$_SESSION[$nomesessao]['DELETADOS'][$tamanho]="FALSO";
		}
		else{
			if(!isset($_SESSION[$nomesessao][$chave]))
				$_SESSION[$nomesessao][$chave]=array();
			$tamanho=count($_SESSION[$nomesessao][$chave]);
			$_SESSION[$nomesessao][$chave][$tamanho]=$valor;
			$_SESSION[$nomesessao]['DELETADOS'][$tamanho]="FALSO";
		}
	}
}